//拦截axios所有http请求，预先放入token请求头
import axios from 'axios'
import store from './store/index'
import router from './router/index'
//请求拦截  request 中间件
axios.interceptors.request.use(
  config => {
    if (store.state.token) {//若令牌存在，则放入请求头
      // 自定义的 有时候命名为x-token 或其他跟后台协商
      config.headers.token = store.state.token
    }
    return config
  }
)

// 响应拦截器 ，提前预处理 响应
axios.interceptors.response.use(
  response => {
    // 如果code为-1 说明用户已注销，或者 token已过期
    // 此时 需要 重新登录，且清除本地的缓存localStorage vuex

    if (response.status == 200) {
      const data = response.data;
      if (data.code == -1) {
        clearHandle()
      }
    }
    // 预处理 完成后，将响应返回
    return response
  }, err => {
    // 错误逻辑
    if( err.response.status === 401){
      //未授权
      clearHandle()
    }
  })

function clearHandle(){
   // 清空缓存
   store.commit('setToken', '');
   localStorage.removeItem('token');

   // 跳转 只登录页
   // 回跳向地址：从路由器的当前路由中获取path
   router.push({
     path: '/login',
     query: {redirect:router.currentRoute.path}
   })
}

// 这里的代码 执行一次即可,在main.js导入一下